In the field of computer science, pattern matching involves checking a given sequence of tokens, such as a sequence of bytes, for a particular pattern. These digital patterns are sometimes referred to as “signatures” or “signature patterns.” Many signature search methods have been developed and deployed, and for a variety of uses. For example, pattern matching has been used in cyber-security (e.g., to detect malicious computer software), surveillance systems, and other automated systems used in domestic and industrial settings. Some known systems have implemented a hardware-based approach to pattern matching, while other systems have implemented a software-based approach. Due at least in part to certain inherent characteristics of hardware- and software-based solutions, those known systems have experienced differing issues with each approach. For example, while traditional software-based pattern matching methods may provide some flexibility in certain aspects (e.g., easier to reconfigure and adapt to variation in signature patterns), software-based implementations are often slower than hardware-based methods (e.g., due to granularity of instruction cycles, ancillary operating overhead, and the like). Traditional hardware-based implementations typically provide greater speed, but they are often more rigidly structured than software-based approaches, and thus are generally more difficult to reconfigure (e.g., as requirements change with time-sensitive applications).
Accordingly, as the amount of data processing and transmission speed grows, there is a need for signature search devices and methods that can operate at faster rates, providing the benefits of a hardware-based approach, but with the reconfigurability of a software-based approach.